উদাহরণ সহ Bean তৈরি এবং পরিচালনা

Spring Boot এর Dependency Injection এবং Beans - স্প্রিং বুট (Spring Boot) - Java Technologies

303

Spring Boot একটি শক্তিশালী ফ্রেমওয়ার্ক, যা ডিপেনডেন্সি ইনজেকশন (DI) এর মাধ্যমে অ্যাপ্লিকেশন ডেভেলপমেন্ট সহজ করে তোলে। Spring এর Bean হল একটি অবজেক্ট, যা Spring Container দ্বারা ম্যানেজ করা হয়। Spring Boot অ্যাপ্লিকেশনে, Beans তৈরি করা এবং পরিচালনা করা সহজ এবং স্বয়ংক্রিয়ভাবে ঘটে।

এখানে, Spring Boot এ Bean তৈরি ও পরিচালনা করার একটি সাধারণ উদাহরণ দেওয়া হবে।


Spring Bean কি?

Spring Bean হল একটি অবজেক্ট যা Spring Framework দ্বারা তৈরি এবং পরিচালিত হয়। Spring Container এটি তৈরি করে, কনফিগারেশন প্রদান করে এবং প্রয়োজনীয় সময় এটি ইনজেক্ট করে। Spring Boot অ্যাপ্লিকেশনে Beans সাধারণত @Component, @Service, @Repository, এবং @Controller অ্যানোটেশন দ্বারা তৈরি হয়।


1. Bean তৈরি করার উদাহরণ

Spring Boot অ্যাপ্লিকেশনে Bean তৈরি করতে, আমরা সাধারণত @Component অ্যানোটেশন ব্যবহার করি। এটি Spring Boot কে বলে দেয় যে এই ক্লাসটি একটি Bean এবং Spring Container এ এটি তৈরি হতে হবে।

1.1 Service Bean তৈরি

ধরা যাক আমাদের একটি UserService ক্লাস আছে, যা ইউজার সম্পর্কিত ব্যবসায়িক লজিক পরিচালনা করবে। আমরা এই ক্লাসটিকে একটি Bean হিসেবে তৈরি করতে @Service অ্যানোটেশন ব্যবহার করতে পারি।

package com.example.helloworld.service;

import org.springframework.stereotype.Service;

@Service
public class UserService {

    public String getUserInfo() {
        return "User: John Doe, Email: john.doe@example.com";
    }
}

এখানে, @Service অ্যানোটেশন Spring Boot কে বলে যে UserService ক্লাসটি একটি Service Bean এবং এটি Spring Container দ্বারা ম্যানেজ হবে।


2. Bean ইনজেকশন (Dependency Injection)

Spring Framework এর অন্যতম প্রধান সুবিধা হল Dependency Injection (DI)। Spring Container স্বয়ংক্রিয়ভাবে Bean গুলি ইনজেক্ট করে দেয়, যাতে কোডে নির্ভরশীলতা কমে যায় এবং সফটওয়্যারটি আরও মডুলার ও টেস্টেবল হয়।

2.1 Constructor Injection

Spring Boot এ Bean ইনজেক্ট করার বিভিন্ন পদ্ধতি রয়েছে। এখানে Constructor Injection ব্যবহার করা হবে।

package com.example.helloworld.controller;

import com.example.helloworld.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class UserController {

    private final UserService userService;

    @Autowired
    public UserController(UserService userService) {
        this.userService = userService;
    }

    @GetMapping("/user")
    public String getUserInfo() {
        return userService.getUserInfo();
    }
}

এখানে, @Autowired অ্যানোটেশনটি Spring Boot কে বলে যে UserService Beanটি UserController ক্লাসে ইনজেক্ট করতে হবে। Constructor Injection পদ্ধতিতে Bean ইনজেকশন করা হয়েছে।


2.2 Setter Injection

একটি বিকল্প পদ্ধতি হল Setter Injection, যেখানে ইনজেকশন প্রক্রিয়া Setter মেথডের মাধ্যমে সম্পন্ন করা হয়।

package com.example.helloworld.controller;

import com.example.helloworld.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class UserController {

    private UserService userService;

    @Autowired
    public void setUserService(UserService userService) {
        this.userService = userService;
    }

    @GetMapping("/user")
    public String getUserInfo() {
        return userService.getUserInfo();
    }
}

এখানে, setUserService() মেথডের মাধ্যমে UserService Bean ইনজেক্ট করা হয়েছে।


3. Bean ম্যানেজমেন্ট

Spring Boot আপনার Bean গুলি Spring Container (ApplicationContext) দ্বারা ম্যানেজ করে। আপনি Bean গুলি সরাসরি তৈরি না করে Spring Context থেকে আনতে পারেন।

3.1 Bean ম্যানেজমেন্ট উদাহরণ

Spring Boot অ্যাপ্লিকেশনে, আপনি ApplicationContext ব্যবহার করে Bean গুলির অ্যাক্সেস পেতে পারেন।

package com.example.helloworld;

import com.example.helloworld.service.UserService;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ApplicationContext;

@SpringBootApplication
public class HelloWorldApplication implements CommandLineRunner {

    private final ApplicationContext context;

    public HelloWorldApplication(ApplicationContext context) {
        this.context = context;
    }

    public static void main(String[] args) {
        SpringApplication.run(HelloWorldApplication.class, args);
    }

    @Override
    public void run(String... args) throws Exception {
        // Bean নেওয়া হচ্ছে Spring Context থেকে
        UserService userService = context.getBean(UserService.class);
        System.out.println(userService.getUserInfo());
    }
}

এখানে, ApplicationContext ব্যবহার করে UserService Bean এর একটি ইন্সট্যান্স নিয়ে তার মেথড কল করা হয়েছে।


4. Bean এর লাইফসাইকেল

Spring Framework এ Bean এর একটি নির্দিষ্ট লাইফসাইকেল থাকে। Spring Container Bean তৈরি করে, সেটির ইনজেকশন সম্পন্ন করে এবং প্রয়োজন হলে ডেস্ট্রয় করে। আপনি Bean এর লাইফসাইকেল কাস্টমাইজ করতে @PostConstruct এবং @PreDestroy অ্যানোটেশন ব্যবহার করতে পারেন।

4.1 @PostConstruct এবং @PreDestroy উদাহরণ

package com.example.helloworld.service;

import org.springframework.stereotype.Service;

import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;

@Service
public class UserService {

    @PostConstruct
    public void init() {
        System.out.println("UserService Bean তৈরি হয়েছে");
    }

    @PreDestroy
    public void destroy() {
        System.out.println("UserService Bean ধ্বংস করা হচ্ছে");
    }

    public String getUserInfo() {
        return "User: John Doe, Email: john.doe@example.com";
    }
}

এখানে, @PostConstruct মেথডটি Bean তৈরি হওয়ার পর কল হয়, এবং @PreDestroy মেথডটি Bean ধ্বংস হওয়ার আগে কল হয়।


সারাংশ

Spring Boot অ্যাপ্লিকেশনে Bean তৈরি ও পরিচালনা করা সহজ এবং অত্যন্ত কার্যকর। @Service, @Component বা অন্যান্য অ্যানোটেশন ব্যবহার করে Bean তৈরি করা যায় এবং Dependency Injection এর মাধ্যমে তাদের ইনজেক্ট করা হয়। আপনি Constructor Injection বা Setter Injection পদ্ধতি ব্যবহার করতে পারেন। Spring Container Bean গুলির জীবনচক্র (Lifecycle) পরিচালনা করে, এবং প্রয়োজনে @PostConstruct@PreDestroy অ্যানোটেশন ব্যবহার করে Bean এর কাস্টম লাইফসাইকেল ম্যানেজ করতে পারেন।

Content added By
Promotion

Are you sure to start over?

Loading...